Image
What I’ve Learned as a Junior Software Engineer at Egnyte

What I’ve Learned as a Junior Software Engineer at Egnyte

When I was in college, I became deeply interested in the software world and startup culture. I began binge-watching the comedy series Silicon Valley, which made me realize the real-world importance of the theoretical computer science concepts I was studying, like compression, encryption, and networking. I wished I could get to work on such exciting engineering problems.

Thankfully, I got my wish. Shortly after graduating, I was hired as a Junior Software Engineer at Egnyte, a Silicon Valley-based, late-stage startup. Two years on, I couldn’t have asked for a better place to start my career and hone my craft.

With that in mind, I’ve compiled a list of the biggest lessons I’ve learned from my time at Egnyte so far. If you’re a future graduate interested in software and startups, I hope these insights will help you hit the ground running as you prepare to start your engineering career.

Learn the Fundamentals That Underpin Your Product

During my first few days at Egnyte, I was asked to go through the codebase using small enhancement tickets. That, along with some technical sessions from my mentors, helped me answer some basic questions: What businesses do we cater to as a company? How does our product work? What will I be working on? 

I joined the Infrastructure team to work on Egnyte Object Store (EOS). It’s a core piece of Egnyte’s infrastructure, allowing customers to store hundreds of terabytes of data that can be accessed and shared securely. EOS hosts tons of interesting features, such as:

  • Encryption at rest 
  • Deduplication
  • Disaster recovery 
  • Highly scalable and performant architecture
  • Support for all major public cloud providers, and a lot more

Hosting a plethora of features requires a complex, fleshed-out, self-healing architecture. To ensure everything runs accordingly, we use a lot of background jobs in EOS to perform various bookkeeping actions, such as durability checks or security checks. Some of my early tasks dealt with retrieving and analyzing stats from these jobs, coming up with meaningful insights, and ensuring these jobs were working fine. 

These early lessons helped me delve deeper in the architecture and understand the process flows in greater detail. This was incredibly beneficial later, because I was able to pinpoint solutions to any task I was assigned. Ultimately, it helped me make code changes faster and understand how any changes would impact other parts of the system.

Code Reviews Lead to Better Engineers

After I developed a good understanding of the system, I started shipping enhancements based on the insights learned from the jobs and other technical tasks. As part of this process, I participated in mandatory, constant, and consistent code reviews from my peers and mentors.

Through these assessments, I learned how to write quality code that is easy to understand, maintain, and modify in the future. For example, when I started I was writing code just to solve the problem at hand, but then I realized the importance of test-driven development. I learned to write unit tests and add test coverage to every new change, which simplified my work life by making development and deployment safer and faster. I also learned how to use design patterns to solve problems efficiently.

I’ll never forget when I executed my first merge request. Once I fixed every single comment on my first merge request, got those esteemed approvals, and duly tested my change in QA, my code was deployed to production. I could immediately see metrics in Grafana and logs in Kibana generated from my code. It made me very happy and filled me with a sense of accomplishment!

Learn From the Experts Around You

Last year, we migrated our stack from a physical data center to a public cloud. At the time, I had the opportunity to meet and interact with Kris Lahiri, Egnyte’s co-founder and Chief Security Officer. We met in Mumbai, where he took us down memory lane and told us several interesting anecdotes about the initial days of the startup and how several architectural decisions helped us reach the scale we are at presently. 

He connected those efforts to the ongoing migration from Egnyte’s data centers to a public cloud and explained in great depth why this migration project was so crucial. I was happy to contribute my bit to the project and to get more context about the impact of my daily work and how it adds value to the product.

My biggest takeaway from the meeting: There are many solutions, tools, and technologies on the market, but the most important part of evaluating those options is determining how well they meet our specific needs.

Work-from-the-office week in Pune, India.

Visibility is Critical at Scale

With 16,000 customer domains and billions of requests, Egnyte operates at a massive scale, with a complex architecture. As a result, we occasionally face the unexpected, so we rely on a robust monitoring system that supports as much visibility and durability as possible.

I’ve learned how to chase and debug production issues by going through Kibana logs. I’ve analyzed requests at different stages, and at different layers and components such as HAProxy, Nginx, and Redis.

Egnyte’s cloud infrastructure consists of hundreds of components and thousands of app nodes. As I became more familiar with the system, I noticed there was a need to monitor it automatically, so I built an alerting system on top of New Relic and Grafana that notifies Dev and SRE teams when anything goes haywire. It saved us from being continuously hooked to dozens of dashboards. 

Working on a team that operates at such a scale carries some other benefits too:

  • I get to work across domains and coordinate with different teams like Operations and SRE. This happens when we analyze production issues, deploy or maintain any service, and in other day-to-day tasks.
  • I got to see the magic these folks do under the hood, be it inter-service networking, autoscaling, effective routing between various components or implementing some microservice architecture pattern. This experience encouraged me to learn more about DevOps and system architecture. 

Manage Your Time Wisely

Initially, I struggled with time management and multitasking, but my mentor showed me how he prioritizes and allocates time for different tasks and, equally importantly, how to get things done. Using these techniques helped me plan and manage my work efficiently.

One of the best tips I received was about “switching context.” For many junior engineers, coding is like building a puzzle—they can’t quit until they get a solution. But sometimes, the best way to solve a puzzle is to step away from it. Rather than banging your head against the wall all day on one project, move on to another task you need to complete, then come back to the problem with a fresh set of eyes. You’ll probably get two tasks completed in the time it would have taken you to complete one.

Also, don’t be afraid to ask for help. Senior engineers have already solved many of the same types of problems you might have to deal with, so they can help guide you and get you to the finish line faster.

Find the Right Culture

This can be a real challenge for junior engineers because company culture is created by more senior members of the team. But even though you can’t do much to shape it early on, you can look for the right signs when you go through the hiring process. This is important because being surrounded by the right people and process can be a huge benefit to those just starting out.

My first day at Egnyte was the same day there was a complete COVID lockdown in India. Being a fresh graduate with no mentors physically around, I was anxious about how it would pan out. And while I knew little about industry standards, I was fortunate to have colleagues that were accessible and friendly, and they made me feel comfortable in my new role.

In addition to our weekly tech talks, we have Friday group meetings—which we call “Zoom Chai” in India— where we discuss random things outside of work, and daily sync ups that start with casual talk and lead into what we’re focusing on that day. We also have quarterly all-hands meetings that help me understand different aspects of a SaaS business and where we’re headed as a company.

Last November, we had a work-from-the-office week in Pune, India, and a big party celebrating the launch of Egnyte India. We were joined by our CEO, Vineet Jain, and we had lots of fun games and amazing dinner-time conversations. All of these things help mebuild relationships and understand my role in delivering on company objectives.

Work on Your Soft Skills

An engineering degree is great, but it doesn’t prepare you for everything you’ll do as an engineer. For example, every Monday we have one-hour tech talks where we learn what different teams are working on, including new projects and technological upgrades. We also discuss how we incorporate new solutions and any new features we’ve added for our customers. I had the opportunity to present at one of these weekly sessions, and one of my seniors gave me good advice on how to conduct a successful presentation, including how to make my slides look more professional.

Storytelling is important for engineers because we need to build consensus on a task. We must effectively communicate our ideas to others so they can be evaluated efficiently, and that requires soft skills like being able to do an effective presentation.

Make Every Day a Journey

March 16 marked my second anniversary with Egnyte! When I look back, I am full of gratitude for everything. There was a steep learning curve, but I must say it was a rewarding experience.

One of the things that I have learned and enjoyed doing the most has been fixing an issue by starting with a clean slate. At first, only the symptoms are visible and not the cause. Then you try to reproduce the issue with some tests, deep dive into the codebase, come up with some solution, validate it, and, after peer reviews, optimize it to make it perfect. The everyday journey from unknown to known and the feeling of finding an optimum solution to a new engineering problem is unmatched!

And remember to keep learning. Special thanks to the EOS team who helped me become a better engineer and continues to help me two years into my career at Egnyte.

Share this Blog

Don’t miss an update

Subscribe today to our newsletter to get all the updates right in your inbox.

By submitting this form, you are acknowledging that you have read and understand Egnyte’s Privacy Policy.